www.gusucode.com > LTE基带收发仿真系统matlab源码程序 > LTE baseband simulation/scramble.m

    function scramblBits = scramble (codeBit,iCW,RNTI,iSubFrame,cellID)
% 功能:比特级加扰函数
% 参考文献 TS 36.211 V8.7.0 section 6.3.1
% 输入:codeBit:码块级联后的二进制数据
% 			iCW:第iUE个用户的第iCW个码字
%				RNTI:无线网络临时标识
%				iSubFrame:第i个子帧
%				cellID:小区ID
%	输出:scramblBits:加扰后二进制数据
%  Author:		程式小组(徐萌 张妙 张晓庆)
%  Date:		2010-07-11
%  ==========================================================
ns = iSubFrame*2;                  % 偶数时隙号
Nc = 1600;                         % 恒定常数
% % ========================= 用于测试 ================================
% % clear
% % clc
% % input = round(rand(2,40));

% % RNTI = 1;
% % cellID = 1;
% % Nc = 0;
% % ns = 0;
% % ===================================================================



nBit = size(codeBit,2);     %下行传输码字数,每码字比特数
nPN = nBit;                             %PN序列长度等于每码字比特数

% % =========== pseudo-random 序列生成 ================================
% % 生成公式为c(n) = (x1(n+Nc)+x2(n+Nc))mod 2,先求x1和x2

x1 = zeros(1,nPN+Nc);
x2 = zeros(1,nPN+Nc);

x1(1,1:31) = bitget(1,1:31);

% PDSCH 加扰初始化
    if mod(ns,2) == 0                            %每个subframe开始时初始化
        c_init = RNTI*2^14+(iCW-1)*2^13+floor(ns/2)*2^9+cellID;
        x2(1:31) = bitget(c_init,1:31);
    end


for n = 1:nPN+Nc-31
    x1(1,n+31) = mod((x1(n+3)+x1(n)),2);
    x2(n+31) = mod((x2(n+3)+x2(n+2)+x2(n+1)+x2(n)),2);
end


c = mod((x1(1+Nc:end)+x2(1+Nc:end)),2); %扰码
scramblBits = mod(codeBit+c,2);